В Эликсире вычисления рассматриваются как ряд основных преобразований. Данные неизменны, а оператор = не предназначен для присваивания, а для сопоставления с образцом.
1. Оператор сопоставления
Сопоставление позволяет связывать значения с шаблонами. Если структура левой части не соответствует правой, преобразование завершается неудачно. Эликсир использует специализированные операторы для потока данных: арифметика (+, -, *, /), сравнение (===, !==, >=), и объединение (<> для строк, ++ для списков).
2. Выражение 'with'
Выражение with организует многошаговые преобразования, где успех зависит от условия. Оно позволяет последовательно выполнять сопоставления с использованием <-. В отличие от оператора сопоставления =, если сопоставление в <- не удается, выражение возвращает значение, которое не соответствует, вместо того чтобы вызвать ошибку.
3. Область видимости и синтаксис
Под капотом, with рассматривается как макрос или вызов функции. Переменные, определённые внутри него, не попадают во внешнюю область видимости. Синтаксис, подобный mean = with count = ..., do: sum/count — это способ вычисления производных значений через выражения.
$$\text{среднее} = \frac{\sum_{i=1}^{n} x_i}{n}$$